第5章 リファクタリング
本章を意図的に簡潔にしたのは、マーチン・ファウラーの『リファクタリング』に追加したいアイデアが少なかったからだ。繰り返しになるが、リファクタリングを深く理解するには『リファクタリング』を読んでほしい。(pp.258-259). Kindle 版
Uncle Bob視点からリファクタリングの技法を紹介
ルービックキューブの比喩!
小さい操作の積み上げ
1つ1つの操作は逆操作で戻せる!
操作自体の種類は少ない
個々のリファクタリングは小さい(→ルール15へ)
私の指針は「デバッグの必要がないほど小さい」である。(p.237). Kindle 版
これらのリファクタリングを暗記して、IDEの自動化を覚えることを推奨する。(p.238). Kindle 版
名前の変更
コードが広く知られていないうちに
メソッドの抽出
すべての関数でひとつのことができるように、これ以上抽出できなくなるまで、抽出して、抽出して、抽出しまくるのである。(p.239). Kindle 版
単一責任
自己文書化
関数の名前の長さはスコープに反比例
プライベートな関数の名前は長い
1箇所からしか呼ばれない
変数の抽出
メソッドを抽出するために先に変数を抽出する
(たしかに、変数→引数に置き換えやすい)
Uncle Bobの紹介で初めて知った(『リファクタリング』にはなさそう)
それほど使うことはないとのこと
スーパークラスの抽出
規律
頻繁にリファクタリングしよう。容赦なくリファクタリングしよう。言い訳をせずにリファクタリングしよう。絶対にリファクタリングの許可を得てはならない。(p.259). Kindle 版
テスト(2〜4章)
モジュールやコンポーネントのレベルより下のレベルでは、意図的に1対1の対応関係を解消する。(p.256). Kindle 版
テストと実装の対応関係
容赦ないリファクタリング
(『エクストリームプログラミング』1版の方? 2版にはなさそうだった)
厳密に言えば、テストを数分以上壊したままにしてはならない。(p.257). Kindle 版
小分けにする
逃げ道 git reset --hard